#ifndef SPHERICALARCCLASS_H
#define SPHERICALARCCLASS_H
#include "spherical_arc.h"

class SphericalArcClass
{
public:
    SphericalArcClass();


    static int arcInitFromPoints(SphericalArc * const arc, PmCartesian const * const start,
            PmCartesian const * const end, PmCartesian const * const center);

    static int arcInitFromVectors(SphericalArc * const arc, PmCartesian const * const vec0,
            PmCartesian const * const vec1,
            PmCartesian const * const center);

    static int arcPoint(SphericalArc const * const arc, double angle_in, PmCartesian * const out);

    static int arcNormalizedSlerp(SphericalArc const * const arc, double t, PmCartesian * const out);

    static int arcLength(SphericalArc const * const arc, double * const length);

    static int arcFromLines(SphericalArc * const arc, PmCartLine const * const line1,
            PmCartLine const * const line2, double radius,
            double blend_dist, double center_dist, PmCartesian * const start, PmCartesian * const end, int consume);

    static int arcConvexTest(PmCartesian const * const center,
            PmCartesian const * const P, PmCartesian const * const uVec, int reverse_dir);

    static int arcTangent(SphericalArc const * const arc, PmCartesian * const tan, int at_end);
};

#endif // SPHERICALARCCLASS_H
